home *** CD-ROM | disk | FTP | other *** search
/ SPACE 2 / SPACE - Library 2 - Volume 1.iso / utility / 647 / on_line / on_line.doc < prev   
Text File  |  1992-10-14  |  17KB  |  447 lines

  1.                   ON_LINE.DOC 1.0    OCT. 1992
  2.  
  3. NOTE: These programs need to be on a HARD DRIVE to run.
  4.  
  5. The purpose of these programs is to provide an editable On Line
  6.      manual for GFA BASIC. 
  7.  
  8. These programs will run in ST high & ST medium.
  9. These programs will run on ATARI ST, ATARI MEGA STe, ATARI TT 
  10.     computers.  And on TOS 2.06
  11.  
  12. After UnArcing ON_LINE.ARC there should be 4 files.
  13.  
  14. 1. ON_LINE.DOC 1.0 -  This text file.
  15. 2. ON_LINE.ACC 1.0 -  The On Line accessory.
  16. 3. CREATEON.PRG 1.0 -  The program that initially creates the 
  17.                        random access file ( ********.RAN ).  And
  18.                        does other stuff also.
  19. 4. MANUAL.TXT 1.0  -  The On Line manual in text file form.
  20.  
  21. Quick Start - For those in the crowd that would like to get
  22.      started right away.  Copy ON_LINE.ACC to directory C:\
  23.      Copy CREATEON.PRG to your hard drive (anywhere).  Run
  24.      CREATEON.PRG   You may be able to figure it out from
  25.      there.
  26.  
  27. Slow but sure start - Read this file.
  28.  
  29.  
  30. CREATEON.PRG - Pull down menu.
  31.  
  32.      Desk Me - CreateOn - a note about who wrote the programs.
  33.  
  34.      Random Me - Create Random Access File - the random access file
  35.           is made up of pages (records).  The size of the page is
  36.           up to the user - you.  The size of the page is configurable
  37.           from 15 to 79 characters horizontally.  5 to 20 characters
  38.           vertically.  And there may be 100 to 1000 pages in the
  39.           random access file.  The random access file size will be
  40.           shown and then the user will be given a choice to create
  41.           the file or not.  If there is not enough space on the
  42.           hard drive to create the file an alert box will let the 
  43.           user know.  The random access file can be anywhere on the
  44.           hard drive and can be named anything.  If the extension
  45.           .RAN is left off it will be added for the user.  The file
  46.           C:\ON_LINE.DAT will also be created at this time.  This
  47.           file contains data that ON_LINE.ACC will use.  ON_LINE.DAT
  48.           must stay in the root directory on C:\ drive.  Also if
  49.           at anytime the user wants to mess around with these files
  50.           make a copy and mess with the copy.  It is almost guaranteed
  51.           that if these files are altered the programs will not run
  52.           correctly.   Recommended beginning random access file size - 
  53.           79 characters horizontal, 20 characters vertical, 300 pages.
  54.                           
  55.      Random Me - Add to .RAN from a Text File - select a text file
  56.           and the pages (records) there in will be added to the 
  57.           random access file.  Duplicates will not be added. 
  58.           MANUAL.TXT should be the first text file added to the
  59.           random access file.  The pages (records) in the Text file
  60.           must be separated by "*****"  At least 5 asterisk in a row.
  61.           Look at MANUAL.TXT for a better idea.
  62.  
  63.      Random Me - Create a Text File from .RAN - this selection
  64.           will generate a text file from the random access file.
  65.           The pages (records) will be alphabetically sorted.
  66.           This is a good way to make a back up of the random access
  67.           file.  Also this is the method that will be used to 
  68.           transfer an On Line manual when new versions of these
  69.           programs are released.
  70.  
  71.      Random Me - Append a Text File from .RAN - an existing 
  72.           text file will be appended from the random access file.
  73.           The pages (records) added will be in alphabetical order. 
  74.  
  75.      Random Me - Absolute - .RAN to Text File - a text file will
  76.           be generated from the random access file sequentially.
  77.           It is possible for pages (records) to get lost in the 
  78.           random access file.  This is a way to recover that
  79.           information.  The pages will not be in alphabetical
  80.           order.
  81.  
  82.      Random Me - Call ON_LINE.PRG - ON_LINE.ACC may be renamed to
  83.           run as a program.  If there is enough free RAM and if
  84.           ON_LINE.PRG is in the same directory as CREATEON.PRG
  85.           ON_LINE.PRG may be run from CREATEON.PRG
  86.  
  87.      Random Me - Quit - quit the program.
  88.  
  89.               
  90. ON_LINE.ACC - the On Line manual interface, runs in 44 K.
  91.  
  92.      The options at the bottom of the screen are selected by
  93.      pressing the outlined letter in the respective word or
  94.      clicking on the word.  For example to select Add - press
  95.      "a" or "A" on the keyboard or click directly on the word
  96.      "Add".
  97.  
  98.      Add - use this option to add a new page to the random access
  99.           file.  The index of the page must be in the first line
  100.           and the first 15 characters.  An addition might look
  101.           like this.
  102. characters     123456789...
  103. 1.             PRINT
  104. 2.
  105. 3.
  106.  
  107.           In the example the index is the word PRINT.
  108.           List an existing page for another example.
  109.  
  110.      Modify - this is the way to modify an existing page.  Select
  111.           a page to modify from the list of pages.  Then modify it.
  112.  
  113.      Delete - delete a page from the random access file.  Select a
  114.           page to delete from the list of pages.  The page will
  115.           be shown on the screen, then the user will have the option
  116.           to delete.  Be sure because once it's gone it's history.
  117.  
  118.      List - display a page to the screen.  ON_LINE.ACC is
  119.           specifically designed to be called from the pull
  120.           down menu in GFA BASIC accessible by clicking on 
  121.            (the ATARI symbol) at the top left of the editor 
  122.           screen in GFA BASIC.  This action leads us to the 
  123.           output screen with a pull down menu at the top.  If 
  124.           the user Lists a page to the screen and then Quits 
  125.           the page will be left on the output screen because 
  126.           ON_LINE.ACC will not send a redraw to the program 
  127.           that called it.  So what was the exact syntax of 
  128.           that command ?  The paper manual is on the bookshelf.  
  129.           Call ON_LINE.ACC, List the page to the screen, Quit, 
  130.           go back to the editor.  Now - the user can toggle back 
  131.           and forth (if needed) from the editor to the List using 
  132.           the Esc key.  The List is still there. 
  133.  
  134.      ⇧ (up arrow) - the list of pages can get pretty long so 
  135.           this is the way to move around in the list.  Move 
  136.           alphabetically backward.  Also the list of pages only 
  137.           shows the first 8 characters of the index.  15 characters 
  138.           are used by the program internally for comparisons.
  139.  
  140.      ⇩ (down arrow) - move alphabetically forward.
  141.  
  142.      Quit - Return to the parent program (usually GFA BASIC).
  143.             The file ON_LINE.DAT maybe updated at this time - 
  144.             if any significant changes have been made.  So
  145.             if the user turns off power to the computer before
  146.             Quit - significant changes maybe lost.  Significant
  147.             changes would be - an Add, a Delete, a Modify that
  148.             changes any characters with in the first 15 characters
  149.             of the first line of a record.
  150.  
  151.      LF: #### of ####  ###.## %  - yes that's a mouth full.
  152.           Lets say there are 100 pages in the random access file
  153.           and 10 to them are full.  The load factor line looks
  154.           like this.  LF: 10 of 100  10.00 %  Get the idea.
  155.           The load factor tells the user how full the random access
  156.           file is.  If the load factor gets to be 80% or more create
  157.           a new random access file with more pages and transfer
  158.           the manual using a text file.
  159.  
  160. CAUTION - a word of caution.  Although these programs have been
  161.           used and tested the user may want to back up the hard drive.
  162.           This is a good idea whether or not the user uses these
  163.           programs.
  164.  
  165. Credit - these programs were written in the United States using
  166.           GFA BASIC and DevpacST2.  Assembly language was used to
  167.           speed up some of the routines - not that GFA is slow
  168.           but assembly is faster.
  169.  
  170. Share Ware - Support Share Ware and Public Domain programmers.
  171.           It's so easy to go about our business and forget that 
  172.           someone spent hours designing a program for us to use.
  173.           They could have kept it to themselves.  Often the 
  174.           Share Ware & Public Domain programmers receive very
  175.           little thanks - Seriously.  Don't count on some other
  176.           user to send in a check or thank you note.  Every other
  177.           person is thinking the same thing you are - someone 
  178.           else will do it.
  179.           
  180.           For those users that do register I'll send you
  181.           four assembly routines on disk.
  182.  
  183.           Routine 1 - pass in a horizontal (x) pixel number.
  184.                The routine will return the text row that
  185.                the pixel is located in.
  186.  
  187.           Routine 2 - similar to Routine 1 except this one
  188.                works with the vertical (y) pixel number.
  189.  
  190.           By using both of the above routines we can tell
  191.                which letter on the screen the user clicked on.
  192.  
  193.           Routine 3 - pass in a horizontal (x) text row.
  194.                The routine will return the exact pixel
  195.                so that TEXT can be placed on the screen
  196.                in the same position as PRINT.
  197.  
  198.           Routine 4 - similar to routine 3 except works
  199.                vertically (y).
  200.  
  201.           Routines 3 and 4 work together to give us a LOCATE
  202.                command for the TEXT command.
  203.  
  204.           These routines are written in 100% assembly code 
  205.                using DevpacST2 and run at least 4 times faster 
  206.                than their respective fully optimized GFA BASIC 
  207.                counter parts.  I'll show you how to use them
  208.                with GFA BASIC 2.0, and GFA BASIC 3.0  These
  209.                routines are compatible with ST high and ST
  210.                medium.  Also an assembler is not required to
  211.                to use these routines 
  212.  
  213.           And how about a tutorial and programming example on
  214.                the subject of using random access files
  215.                and hashed random access files in GFA BASIC.
  216.  
  217. Bugs - yea, there are probably some still in there.  If you run
  218.           into one let me know even if you aren't registered - 
  219.           you will be doing everyone a favor.
  220.  
  221. The editor - The on line editor is not the best I know.  Some
  222.           users may want to use a favorite word processor 
  223.           for major editing of a text file and then add
  224.           the text file to the random access file.
  225.           But to get the most out of the existing editor 
  226.           read up on the FORM INPUT n AS s$ command.  
  227.           There is a rumor that an integrated word
  228.           processor is in the works. 
  229.  
  230.  
  231. These programs are Share Ware: $15
  232.  
  233. CHARLES H. HARVEY
  234. P.O. BOX 701 
  235. LOUISVILLE, CO 80027 
  236.  
  237. On Genie: C.HARVEY9 
  238.  
  239.  
  240. Homework - yea, you heard right HOMEWORK.
  241.  
  242. For this Homework you will be required to write 
  243.  
  244. FUNCTIONs
  245. ENDFUNC
  246.  
  247. and 
  248.  
  249. PROCEDUREs
  250. RETURN
  251.  
  252. in GFA BASIC.
  253.  
  254. Procedures and Functions are very powerful tools that we can 
  255. use to write efficient programs.  Once we know the concepts
  256. we can then decide whether to use them or not.  If we don't 
  257. know about the concepts or chose to not learn them then we
  258. don't really have a choice of how to do things.  
  259.  
  260. Procedures preform a task.  They can change the values of 
  261. our variables if we allow them to or not.  A good example
  262. of a procedure is a routine that sorts an array.
  263.  
  264. example - 
  265.  
  266. @sort(any_string_array$())
  267.  
  268. PROCEDURE sort(VAR an_array$())
  269. '
  270. ' some clever code
  271. '
  272. RETURN
  273.  
  274. In the first line of the example we call the Procedure sort
  275. and we pass it the name of ANY string array we have previously
  276. dimension.  This is very powerful.  We can use one section of
  277. code to sort any number of arrays in a program.  We don't have
  278. to write 10 similar routines to sort 10 different string arrays.
  279. This saves on program size.  Also it gives us the ability to 
  280. write a section of code and then reuse it again in other programs.
  281. In the first line of the procedure the word VAR gives the procedure
  282. sort permission to change the values of the array passed to the 
  283. procedure.  Arrays must be passed this way - whether we want to
  284. give the procedure permission to change the values of the array
  285. or not.  When the computer gets to the RETURN at the end of
  286. the procedure - program execution will continue with the line
  287. following the procedure call.  
  288.  
  289. Think of how GFA is set up.  For instance the Sort commands,
  290. these are procedures written in assembly that we can all use.
  291. Every time we write a program we don't have to rewrite those
  292. sort commands - they are already done for us. Pretty useful.
  293. But many of the commands in GFA are functions.
  294.  
  295. Functions are similar to Procedures in that we pass variables
  296. to them.  And they also preform a task.  But there are at least
  297. 2 big differences between procedures and functions.  Functions
  298. are designed to return one value, and functions may have more
  299. than one RETURN.
  300.  
  301. Lets get right to an example.  The command MIN() in
  302. GFA is a function.  We pass it a number of values (lets say 2)
  303. and it returns a value - the lowest value.  Lets write 
  304. our own @min() function.
  305.  
  306. PRINT @min(10,20)
  307.  
  308. FOR x=1 TO @min(10,number&)
  309. NEXT x
  310.  
  311. Above are only 2 of the many ways to call the function min()
  312.  
  313. FUNCTION min(value1,value2)
  314.   IF value1 <= value2 THEN
  315.      RETURN value1
  316.   ELSE 
  317.      RETURN value2
  318.   ENDIF
  319. ENDFUNC
  320.  
  321. More than one return - this gives us a lot of room.
  322.  
  323. So we can write our own commands using the existing base of
  324. commands in GFA.  But first there are two 
  325. concepts that we need to discuss in detail.
  326.  
  327. PROCEDURE some_thing
  328.   LOCAL number,string$
  329.   LOCAL flag!
  330.   '
  331.   ' some code
  332.   '
  333. RETURN
  334.  
  335. The variables - number, string$, and flag! are local variables.
  336. They are local to the PROCEDURE some_thing. 
  337.  
  338. sum=13
  339. a=1
  340. b=2
  341. c=3
  342. d=@add(a,b,c)
  343. '
  344. FUNCTION add(x,y,z)
  345.   LOCAL sum
  346.   '
  347.   sum=x+y+z
  348.   RETURN sum
  349. ENDFUNC
  350.  
  351. In this example the value of the sum on the first line will
  352. not change when the LOCAL sum value becomes 6 because
  353. the sum inside the FUNCTION is LOCAL to the FUNCTION add.
  354. If variables are not LOCAL they are by default GLOBAL.
  355.  
  356. Ok. VAR - gives the procedure permission to change the
  357. value of a variable.  
  358.  
  359. a=2
  360. b=4
  361. c=7
  362. sum=0
  363. '
  364. @example(a,b,c,sum) 
  365. '
  366. PROCEDURE example(x,y,z,the_sum)
  367.   the_sum=x+y+z
  368. RETURN
  369.  
  370. In the above example we want to change the value of sum
  371. but it's not going to happen because we did not use VAR.
  372. This is a difficult error to find.  Everything looks
  373. great, the value is being changed right there in the
  374. PROCEDURE.  Watch out for that one.
  375.  
  376. a=2
  377. b=4
  378. c=7
  379. sum=0
  380. '
  381. @example(a,b,c,sum) 
  382. '
  383. PROCEDURE example(x,y,z,VAR the_sum)
  384.   the_sum=x+y+z
  385. RETURN
  386.  
  387. Now the PROCEDURE will work.
  388.  
  389.  
  390. OK.  The homework is:
  391.  
  392. 1. Write a FUNCTION that accepts 5 numbers and RETURNs
  393.    the MIN value. The call might look like this.
  394.    PRINT @min(a,b,c,d,e)
  395.  
  396. 2. Write a FUNCTION similar to #1 but RETURNs the max value.
  397.  
  398. 3. Write a FUNCTION that RETURNs the absolute value of a
  399.    number.  The call might look like this.
  400.    PRINT @absolute_value(number)
  401.  
  402. 4. Write a FUNCTION that inserts a string into a second string
  403.    without overwriting any characters in the second string.
  404.    Also the user gives the position in the second string
  405.    that the first string will be inserted.
  406.    The call might look like this.
  407.    PRINT @insert$("new_part","insert_in_this_string",4)
  408.  
  409. 5. Write a FUNCTION similar to UPPER$("characters").
  410.    In other words write a FUNCTION that changes
  411.    lower case letters in a string to upper case letters.
  412.    The call might look like this.
  413.    PRINT @upper_case("any characters &#@=!*!(")
  414.  
  415. 6. Write a FUNCTION that changes upper case letters in a 
  416.    string to lower case letters.
  417.    The call might look like this.
  418.    PRINT @lower_case("Any Characters &#@=!*!(")
  419.  
  420. When doing the homework don't cheat by using the obvious
  421. basic command.
  422.  
  423. Registered Users - go ahead and do the homework - send it to 
  424. me in the mail.  I'll grade it and let you know how you did.  
  425. If any problems in the assignment were missed I'll give you 
  426. the solutions.
  427.  
  428. These are good practice but we would not want to use 1-3,5
  429. in a real program because they would be slower then their
  430. GFA BASIC counter parts.
  431.  
  432. Sorry, no extra credit this time.
  433.  
  434.  
  435.  
  436.  
  437.  
  438.  
  439. Atari, ST, are copyrights of Atari Corporation.
  440.  
  441. All other products mentioned are copyright and/or trademark of their 
  442. respective holders.
  443.  
  444.  
  445.  
  446.  
  447.